package com.ssyt.ssh.action;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.ssyt.ssh.common.BaseAction;
import com.ssyt.ssh.entity.Department;
import com.ssyt.ssh.entity.Employee;
import com.ssyt.ssh.entity.PageBean;
import com.ssyt.ssh.service.EmpService;

@Controller("empAction")
@Scope("prototype") // 让其从spring容器中获取的对象都是新对象
public class EmpAction extends BaseAction {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	// 只能写实现类对象接口，不能直接实现类
	@Resource
	private EmpService empService;
	private PageBean pageBean;
	private List<Department> depts;
	private Employee emp;
	public List<Department> getDepts() {
		return depts;
	}
	public void setDepts(List<Department> depts) {
		this.depts = depts;
	}
	public Employee getEmp() {
		return emp;
	}
	public void setEmp(Employee emp) {
		this.emp = emp;
	}
	public PageBean getPageBean() {
		return pageBean;
	}
	public void setPageBean(PageBean pageBean) {
		this.pageBean = pageBean;
	}
	
	
	/**
	 * 定义查询所有员工信息的方法
	 */
	public String listEmp() {
		// 初始化部门信息
		setDepts(empService.getDepts());
		// 初始化分页
		if (pageBean == null) {
			pageBean = new PageBean();
		}
		setPageBean(empService.listEmpPagnation(emp, pageBean));
		
		return SUCCESS;
	}
	
	/**
	 * 初始化添加界面
	 */
	public String initAdd() {
		// 初始化部门信息
		setDepts(empService.getDepts());
		
		return "add";
	}
	
	/**
	 * 定义添加员工的方法
	 */
	public String addEmp() {
		empService.addEmp(emp);
		
		return "list";
	}
	
	/**
	 * 初始化修改员工界面
	 */
	public String initUpdate() {
		// 初始化部门信息
		setDepts(empService.getDepts());
		// 根据id初始化修改的员工信息
		setEmp(empService.getEmp(emp));
		
		return "update";
	}
	
	/**
	 * 定义添加员工的方法
	 */
	public String updateEmp() {
		empService.updateEmp(emp);
		
		return "list";
	}
	
	/**
	 * 定义删除员工的方法
	 */
	public String deleteEmp() {
		empService.deleteEmp(emp);
		
		return "list";
	}

}
